package com.mmall.service;

import com.github.pagehelper.PageInfo;
import com.mmall.common.ServerResponse;
import com.mmall.pojo.Product;
import com.mmall.vo.ProductDetailVo;

/**
 * @Author: hps
 * @Description:
 * @Date: Created in 15:57 2018/7/17
 */
public interface IProductService {

    /**
     * 更新或保存产品
     * @param product 需要更新或者保存的产品
     * @return
     */
    ServerResponse saveOrUpdateProduct(Product product);

    /**
     * 更新产品状态
     * @param productId 产品id
     * @param status 状态标识
     * @return
     */
    ServerResponse<String> setSaleStatus(Integer productId, Integer status);

    /**
     * 获取产品详情
     * @param productId 产品Id
     * @return
     */
    ServerResponse<ProductDetailVo> manageProductDetail(Integer productId);

    /**
     * 分页查询产品列表
     * @param pageNum 当前页
     * @param pageSize 每页显示条数
     * @return
     */
    ServerResponse getProductList(int pageNum, int pageSize);

    /**
     * 分页搜索产品列表
     * @param productName 产品名称
     * @param productId 产品id
     * @param pageNum 当前页
     * @param pageSize 每页显示条数
     * @return
     */
    ServerResponse searchProduct(String productName, Integer productId, int pageNum, int pageSize);

    /**
     * 根据产品Id获取产品详情
     * @param productId 产品id
     * @return
     */
    ServerResponse<ProductDetailVo> getProductDetail(Integer productId);

    /**
     * 根据关键字或者分类Id查询产品列表
     * @param keyword 关键字
     * @param categoryId 分类Id
     * @param pageNum 当前页
     * @param pageSize 每页显示条数
     * @param orderBy 排序条件
     * @return
     */
    ServerResponse<PageInfo> getProductByKeywordCategory(String keyword, Integer categoryId, int pageNum, int pageSize, String orderBy);
}
